import App from './App'
import Vue from 'vue'
import uView from '@/uni_modules/uview-ui' // 引入全局uView
import utils from './utils'
import api from '@/api'
import store from './store'

// #ifndef VUE3
Vue.prototype.$store = store

Vue.config.productionTip = false
App.mpType = 'app'

Vue.use(uView).use(utils).use(api)

Vue.prototype.imageUrl = function(image) {
	return 'https://showyoung.oss-cn-hangzhou.aliyuncs.com/bangbox/icon/' + image
}
Vue.prototype.imagesUrl = function(image) {
	return 'https://showyoung.oss-cn-hangzhou.aliyuncs.com/bangbox/images/' + image
}
// 自定义uview内置配置
uni.$u.setConfig({
	// 修改$u.config对象的属性
	config: {
		// 修改默认单位为rpx，相当于执行 uni.$u.config.unit = 'rpx'
		unit: 'rpx'
	},
	// 修改$u.props对象的属性
	props: {

		// 修改radio组件的size参数的默认值，相当于执行 uni.$u.props.radio.size = 30
		radio: {
			size: 15
		}
		// 其他组件属性配置
		// ......
	}
})

try {
	function isPromise(obj) {
		return (
			!!obj &&
			(typeof obj === "object" || typeof obj === "function") &&
			typeof obj.then === "function"
		);
	}

	// 统一 vue2 API Promise 化返回格式与 vue3 保持一致
	uni.addInterceptor({
		returnValue(res) {
			if (!isPromise(res)) {
				return res;
			}
			return new Promise((resolve, reject) => {
				res.then((res) => {
					if (res[0]) {
						reject(res[0]);
					} else {
						resolve(res[1]);
					}
				});
			});
		},
	});
} catch (error) {}

const app = new Vue({
	store,
	...App
})
// 引入uView封装的http请求工具，将app参数传递到配置中
require('./config/request.js')(app)

app.$mount()
// #endif

// #ifdef VUE3
import {
	createSSRApp
} from 'vue'

export function createApp() {
	const app = createSSRApp(App)
	return {
		app
	}
}
// #endif